package com.plian.system.mapper.fr.bank;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.plian.Tools.pagedata.PageData;
import com.plian.system.entity.fr.bank.BankCurrentHistory;
import com.plian.system.vo.fr.bank.DepositStatisticsVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 银行账户历史利率记录表 Mapper 接口
 *
 * @author gangan
 * @since 2019-09-27
 */
public interface BankCurrentHistoryMapper extends BaseMapper<BankCurrentHistory> {

    /**
     * 按集团id合计
     * @param date
     * @param topGroupIds
     * @return
     */
    List<DepositStatisticsVO> statisticsByTopId(@Param("date") String date,
                                                  @Param("topGroupIds") List<String> topGroupIds);

    /**
     * 按集团id 获取公司数
     * @param date
     * @param topGroupIds
     * @return
     */
    List<DepositStatisticsVO> getCompanyNumber(@Param("date") String date,
                                               @Param("topGroupIds") List<String> topGroupIds,
                                               @Param("depositTypes") List<Integer> depositTypes);


    /**
     * 按集团id 获取公司数
     * @param date
     * @param topGroupIds
     * @return
     */
    List<DepositStatisticsVO> getCompanyNumberByBank(@Param("date") String date,
                                                     @Param("topGroupIds") List<String> topGroupIds,
                                                     @Param("bankCodes") List<String> bankCodes);

    /**
     * 按集团id 获取账户数
     * @param date
     * @param topGroupIds
     * @return
     */
    List<DepositStatisticsVO> getAccountNumberByBank(@Param("date") String date,
                                                     @Param("topGroupIds") List<String> topGroupIds,
                                                     @Param("bankCodes") List<String> bankCodes);

    /**
     * 按集团id合计活期
     * @param date
     * @param topGroupIds
     * @return
     */
    List<DepositStatisticsVO> statisticsByTopIdAndBank(@Param("date") String date,
                                                       @Param("topGroupIds") List<String> topGroupIds,
                                                       @Param("bankCodes") List<String> bankCodes);

    /**
     * 返回存款余额
     * @param param
     * @return
     */
    Double getDepositBalance(Map<String,Object> param);

    /**
     * 返回市属国有企业银行账户及存贷款汇总
     * @param pd
     * @return
     */
    List<PageData> getBankAccountAndDepositLoan(PageData pd);

    /**
     * 返回银行资金企业汇总信息
     * @param pd
     * @return
     */
    List<PageData> getCompanySummary(PageData pd);

    /**
     * 返回银行资金账户列表
     * @param pd
     * @return
     */
    List<PageData> selectBankAccountList(PageData pd);

    /**
     * 返回所有存款数据之和
     * @param pd
     * @return
     */
    PageData selectAllBankDeposit(PageData pd);
}
